﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Longbow.Config
{
	public delegate bool ModuleLoadPolicy(string fileName);

	public interface IConfig
	{
		/// <summary>
		/// 
		/// </summary>
		bool Loaded { get; }

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		bool Load();

		/// <summary>
		/// 
		/// </summary>
		/// <param name="moduleType"></param>
		/// <returns></returns>
		string[] GetModulePaths(ModuleType moduleType);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="path"></param>
		/// <param name="moduleType"></param>
		/// <returns></returns>
		string[] GetModuleFileNames(string path, ModuleType moduleType);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="fileName"></param>
		/// <param name="propertyName"></param>
		/// <returns></returns>
		string GetModuleProperty(string fileName, string propertyName);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="loadPolicy"></param>
		void SetLoadPolicy(ModuleLoadPolicy loadPolicy);
	}
}
